package com.eleadmin.damon.utils.baiduword.service;

import com.eleadmin.damon.utils.baiduword.entity.BaiduwordAccessToken;
import net.sf.json.JSONObject;
import org.springframework.web.client.RestTemplate;

/**
 * @Date 2020/8/29 21:19
 * @Created by Damon
 */
public class BaiduWordAccessToken {

    //上传的图片使用JPG格式可以一定程度上提高识别准确率！

    public String grant_type = "grant_type";
    public String appID = "22371624";
    public String aPI_Key = "jKxWXMlZkftUXqGkUPGOs5y2";
    public String secret_Key = "Z3YBZirTs0ffqCuPot0yoIsC4IkTzcNo";

    private static BaiduwordAccessToken bwat;

    /**
     * 获取API访问token
     * 该token有一定的有效期，需要自行管理，当失效时需重新获取.
     * - 百度云官网获取的 API Key
     * - 百度云官网获取的 Securet Key
     * @return assess_token 示例：
     * "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"
     */
    public void getAuth() {
        try{
            BaiduWordAccessToken bw = new BaiduWordAccessToken();
            // 获取token地址
            String authHost = "https://aip.baidubce.com/oauth/2.0/token?";
            String getAccessTokenUrl = authHost
                    // 1. grant_type为固定参数
                    + "grant_type=client_credentials"
                    // 2. 官网获取的 API Key
                    + "&client_id=" + bw.aPI_Key
                    // 3. 官网获取的 Secret Key
                    + "&client_secret=" + bw.secret_Key;
            String result = new RestTemplate().getForObject(getAccessTokenUrl, String.class);
            JSONObject ob = JSONObject.fromObject(result);
            String token2 = ob.getString("access_token");
            String expiresIn = ob.getString("expires_in");
            bwat = new BaiduwordAccessToken(token2, expiresIn);
        } catch (Exception e) {
            System.err.printf("获取token失败！");
            bwat = null;
            e.printStackTrace(System.err);
        }
    }


    /**
     * 向外暴露的获取token的方法
     */
    public String getAccessToken() {
        if (bwat == null || bwat.isExpired()) {
            getAuth();
        }
        return bwat.getAccessToken();
    }





}
